# python中模运算的计算规则：x - (x//y)*y = (x%y)
# % 整数模运算 就是和数学上的求余数是一样的
print(10 % 3)
print(-10 % 3)

# 位运算是直接操作二进制数据， 所以效率很高
# 按位或  |   只要有一个bit数据是1， 结果就是1
print(5 | 3)
print(-5 | 3)

# 按位与(并且)  &   必须两个都是1， 结果就是1
print(5 & 3)

# 容器len = 6, 索引 0-5
print(10 % 6)
print(10 & 5)
print(10 & 1)
print(11 & 1)

# 按位异或  ^     相同为0， 不同为1
# 一个数异或另一个数两次，得到该数本身
print(3 ^ 2)
print(3 ^ 2 ^ 2)


a = 3
b = 4

a = a ^ b
b = a ^ b  # a ^ b ^ b
a = a ^ b  # a ^ b ^ a
print(a, b)

# 左移 <<     a << b == a * 2 ** b
print(3 << 2)
# 右移 >>    a >>  b == a // 2 ** b
print(3 >> 2)

# 按位取反， 是一元运算符， 0变1. 1变0
print(~5)





